gdk_wayland_display_init_xdg_output (display_wayland);
_gdk_wayland_display_async_roundtrip (display_wayland);
}
+ else if (strcmp(interface, "zwp_idle_inhibit_manager_v1") == 0)
+ {
+ display_wayland->idle_inhibit_manager =
+ wl_registry_bind (display_wayland->wl_registry, id,
+ &zwp_idle_inhibit_manager_v1_interface, 1);
+ }
g_hash_table_insert (display_wayland->known_globals,
GUINT_TO_POINTER (id), g_strdup (interface));
#include <gdk/wayland/keyboard-shortcuts-inhibit-unstable-v1-client-protocol.h>
#include <gdk/wayland/server-decoration-client-protocol.h>
#include <gdk/wayland/xdg-output-unstable-v1-client-protocol.h>
+#include <gdk/wayland/idle-inhibit-unstable-v1-client-protocol.h>
#include <glib.h>
#include <gdk/gdkkeys.h>
struct zwp_keyboard_shortcuts_inhibit_manager_v1 *keyboard_shortcuts_inhibit;
struct org_kde_kwin_server_decoration_manager *server_decoration_manager;
struct zxdg_output_manager_v1 *xdg_output_manager;
+ struct zwp_idle_inhibit_manager_v1 *idle_inhibit_manager;
GList *async_roundtrips;
struct zxdg_imported_v1 *imported_transient_for;
GHashTable *shortcuts_inhibitors;
+
+ struct zwp_idle_inhibitor_v1 *idle_inhibitor;
+ size_t idle_inhibitor_refcount;
};
struct _GdkWaylandSurfaceClass
ORG_KDE_KWIN_SERVER_DECORATION_MANAGER_MODE_CLIENT);
}
+gboolean
+gdk_wayland_surface_inhibit_idle (GdkSurface *surface)
+{
+ GdkWaylandDisplay *display_wayland = GDK_WAYLAND_DISPLAY (gdk_surface_get_display (surface));
+ GdkWaylandSurface *impl = GDK_WAYLAND_SURFACE (surface);
+
+ if (!display_wayland->idle_inhibit_manager)
+ return false;
+ if (!impl->idle_inhibitor)
+ {
+ g_assert (impl->idle_inhibitor_refcount == 0);
+ impl->idle_inhibitor =
+ zwp_idle_inhibit_manager_v1_create_inhibitor (display_wayland->idle_inhibit_manager,
+ impl->display_server.wl_surface);
+ }
+ ++impl->idle_inhibitor_refcount;
+ return true;
+}
+
+void
+gdk_wayland_surface_uninhibit_idle (GdkSurface *surface)
+{
+ GdkWaylandSurface *impl = GDK_WAYLAND_SURFACE (surface);
+
+ g_assert (impl->idle_inhibitor && impl->idle_inhibitor_refcount > 0);
+
+ if (--impl->idle_inhibitor_refcount == 0)
+ {
+ zwp_idle_inhibitor_v1_destroy (impl->idle_inhibitor);
+ impl->idle_inhibitor = NULL;
+ }
+}
+
static void
calculate_popup_rect (GdkSurface *surface,
GdkPopupLayout *layout,
void gdk_wayland_surface_announce_csd (GdkSurface *surface);
+gboolean gdk_wayland_surface_inhibit_idle (GdkSurface *surface);
+void gdk_wayland_surface_uninhibit_idle (GdkSurface *surface);
+
G_END_DECLS
#endif /* __GDK_WAYLAND_SURFACE_H__ */
['keyboard-shortcuts-inhibit', 'unstable', 'v1', ],
['server-decoration', 'private' ],
['xdg-output', 'unstable', 'v1', ],
+ ['idle-inhibit', 'unstable', 'v1', ],
]
gdk_wayland_gen_headers = []